#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
//#include <assert.h>

//srelen的模拟实现

//计数器的版本
//size_t my_strlen(const char* s)
//{
//	assert(s);
//	int count = 0;//计数器
//	while (*s != '\0')
//	{
//		count++;
//		s++;
//	}
//	return count;
//}




//不创建临时变量，求字符串的长度 -- 递归
//size_t my_strlen(const char* s)
//{
//	if (*s == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(s+1);
//}


//指针-指针
//int my_strlen(char* p)
//{
//	char* p1 = p;
//	while (*p != '\0')
//	{
//		p++;
//	}
//	return p - p1;//指针-指针
//}
//
//
//int main()
//{
//	char arr[] = "abcdef";
//	size_t len = my_strlen(arr);
//	printf("%zd\n", len);
//
//	return 0;
//}



//strcpy的模拟实现
//strcpy-字符串拷贝
//#include <string.h>
//
//void my_strcpy(char*dest,const char*src)
//{
//	assert(src != NULL);
//	assert(dest != NULL);
//
//	while (*src!='\0')
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = *src;//拷贝\0
//}
//int main()
//{
//	char arr1[] = { "hello world" };
//	char arr2[20] = { 0 };
//	my_strcpy(arr2, arr1);
//	printf("%s\n", arr2);
//	return 0;
//}



//strcat模拟使用
//函数返回的是目标空间的起始地址
#include <string.h>
#include <assert.h>
char* my_strcat(char*dest,const char*src)
{
	assert(dest && src);
	char* ret = dest;
	//找到目标空间的\0
	while (*dest != '\0')
		dest++;
	//拷贝
	while (*dest++=*src++)
	{
		;//空语句
	}
	return ret;
}

int main()
{
	char arr1[20] = { "hello " };
	char arr2[] = { "world" };
	my_strcat(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}
